package modelo;

import java.util.List;
import java.util.ArrayList;

public class Parte {
	protected interface EstadoPosible { }
	protected List<EstadoPosible> estadosPosibles;
	protected int estadoActual;
	protected int numero;
	
	private enum Estado implements EstadoPosible {
		SANA, ROTA
	}
	
	public void initialize(int numeroDeParte) {
		// Siempre se crea con estado inicial sana y termina rota,
		// incluyendo las clases que hereden de parte.
		estadosPosibles = new ArrayList<EstadoPosible>();
		estadosPosibles.add(Estado.SANA);
		estadosPosibles.add(Estado.ROTA);
		estadoActual = 0;
		numero = numeroDeParte;
	}

	public Parte() {
		initialize(0);
	}
	
	public Parte(int numeroDeParte) {
		initialize(numeroDeParte);
	}
	
	public void recibirDanio() {
		// Si la parte no esta rota avanza a su siguiente estado.
		if (!estaRota()) {
			estadoActual++;
		}
	}
	
	public boolean estaRota() {
		return (getEstado() == Estado.ROTA);
	}
	
	public boolean estaSana() {
		return (getEstado() == Estado.SANA);
	}
	
	private EstadoPosible getEstado() {
    	  return estadosPosibles.get(estadoActual);
      }

	public int getNumero() {
		return numero;
	}
}
